<!--********************************************************************
* Copyright© 2000 - 2025 SuperMap Software Co.Ltd. All rights reserved.
*********************************************************************-->
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no" />
    <title data-i18n="resources.title_getFeatureBySQL_FGB"></title>
    <style>
      body {
        margin: 0;
        padding: 0;
      }

      #map {
        position: absolute;
        top: 0;
        bottom: 0;
        width: 100%;
      }

      #toolbar {
        position: absolute;
        top: 50px;
        right: 10px;
        width: 240px;
        text-align: center;
        z-index: 1000;
        border-radius: 4px;
      }
    </style>
  </head>
  <body>
    <div id="toolbar" class="panel panel-primary">
      <div class='panel-heading'>
          <h5 class='panel-title text-center' data-i18n="resources.title_getFeatureBySQL"></h5></div>
      <div class='panel-body content'>
          <div class='panel'>
            <div class='input-group'>
              <span class='input-group-addon'>SQL</span>
              <input min="0" class="form-control" id="sql" placeholder="SMID > 0" />
            </div>
          </div>
          <input type="button" class="btn btn-default" data-i18n="[value]resources.text_query" onclick="query()"/>&nbsp;
          <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_clear" onclick="clearLayer()"/>
      </div>
    </div>
    <div id="map"></div>
    <script type="text/javascript" include="bootstrap" src="../js/include-web.js"></script>
    <script type="text/javascript" src="../../dist/mapboxgl/include-mapboxgl.js"></script>
    <script>
      var attribution =
        "<a href='https://www.mapbox.com/about/maps/' target='_blank'>© Mapbox </a>" +
        "with <span>© <a href='https://iclient.supermap.io' target='_blank'>SuperMap iClient</a> | </span>" +
        " Map Data <span>© <a href='http://support.supermap.com.cn/product/iServer.aspx' target='_blank'>SuperMap iServer</a></span>";
      var host = window.isLocal ? window.server : 'https://iserver.supermap.io';
      var baseUrl = host + '/iserver/services/map-china/rest/maps/China/zxyTileImage.png?z={z}&x={x}&y={y}';
      var dataUrl = host + '/iserver/services/data-world/rest/data';

      var map = new mapboxgl.Map({
        container: 'map', //div id
        renderWorldCopies: false,
        style: {
          version: 8,
          sources: {
            'raster-tiles': {
              attribution: attribution,
              type: 'raster',
              tiles: [baseUrl],
              tileSize: 256
            }
          },
          layers: [
            {
              id: 'simple-tiles',
              type: 'raster',
              source: 'raster-tiles',
              maxzoom: 18
            }
          ]
        },
        center: [105, 39],
        zoom: 5
      });
      map.addControl(new mapboxgl.NavigationControl(), 'top-left');
      map.addControl(new mapboxgl.supermap.LogoControl({ link: "https://iclient.supermap.io" }), 'bottom-right');

      function query() {
        var sql = document.getElementById("sql").value || "SMID > 0";
        var sqlParam = new mapboxgl.supermap.GetFeaturesBySQLParameters({
          queryParameter: {
            name: 'world@World',
            attributeFilter: sql
          },
          datasetNames: ['World:world']
        });

        new mapboxgl.supermap.FeatureService(dataUrl).getFeaturesBySQL(
          sqlParam,
          'FGB'
        ).then(function (serviceResult) {
            var FGBLayer = new mapboxgl.supermap.FGBLayer({
              url: serviceResult.result.newResourceLocation,
              layerID: 'queryDatas',
              strategy: 'all',
              paint: {
                'fill-color': '#FF3300' /* 填充的颜色 */,
                'fill-opacity': 0.6 /* 透明度 */
              }
            });
            clearLayer();
            map.addLayer(FGBLayer);
            map.on('click', 'queryDatas', function (e) {
              new mapboxgl.Popup()
                .setLngLat(e.lngLat)
                .setHTML(
                    resources.text_country +
                    '：' +
                    e.features[0].properties.COUNTRY
                )
                .addTo(map);
            });
          });
      }

      function clearLayer() {
        if (map.getLayer('queryDatas')) {
          map.removeLayer('queryDatas');
        }
      }
    </script>
  </body>
</html>
